﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<cstdio>
#include<cmath>
#include<string>
using namespace std;
const int N = 265;
char arr[N];
int main()
{
    //下⾯这种读取⽅式遇到\n就停⽌，不会讲\n存⼊arr，会⾃动在末尾存放\0
    scanf("%[^\n]s", arr);
    int i = 0;
    int c = 0;
    while (arr[i] != '\0') //这⾥判断是否等于\0,来觉得是否结束
    {
        if (isdigit(arr[i]))
            c++;
        i++;
    }
    cout << c << endl;
    return 0;
}
//int main()
//{
//	scanf("%[^\n]s", arr);
//	int i = 0;
//	int cnt = 0;
//	while (arr[i]!='\0')
//	{
//		if (arr[i] >= '0' && arr[i] <= '9')
//		{
//			cnt++;
//		}
//		i++;
//	}
//	cout << cnt << endl;
//}
//int main()
//{
//	int i = 0;
//	int cnt = 0;
//	fgets(arr, 265, stdin);
//	while (arr[i]!='\n')
//	{
//		if (arr[i] >= '0' && arr[i] <= '9')
//		{
//			cnt++;
//		}
//		i++;
//	}
//	cout << cnt;
//	return 0;
//}
//int main()
//{
//	char s[110];
//	cin >> s;
//	for (int i = 0; s[i] != '\0'; i++)
//	{
//		if (islower(s[i]))
//		{
//			s[i] = toupper(s[i]);
//		}
//	}
//	cout << s << endl;
//	return 0;
//}
//int main()
//{
//	char arr[110];
//	cin >> arr;
//	for (int i = 0; arr[i] != '\0'; i++)
//	{
//		if (arr[i] >= 97 && arr[i] <= 122)
//		{
//			arr[i] -= 32;
//		}
//		cout << arr[i];
//	}
//
//	return 0;
//}
//int ans[7];//中奖数字
//int ans_c[7];//中奖个数
//int main()
//{
//    int n = 0;
//    int num = 0;
//    cin >> n;
//    //输⼊中奖号码
//    for (int i = 0; i < 7; i++)
//    {
//        cin >> ans[i];
//    }
//    while (n--)
//    {
//        int cnt = 0;
//        //循环输⼊⼀次彩排上的7个号码
//        for (int i = 0; i < 7; i++)
//        {
//            cin >> num;
//        //每个号码和⼀次7个中奖号码⽐较
//        for (int j = 0; j < 7; j++)
//        {
//            if (num == ans[j])
//            {
//                cnt++; //统计中奖数字的个数
//                break;
//            }
//        }
//        }
//        ans_c[7 - cnt]++;
//    }
//    for (int j = 0; j < 7; j++)
//    {
//        cout << ans_c[j] << " ";
//    }
//    return 0;
//}
//int main()
//{
//	float f = 4.65;
//	int n = (int)(f + 0.5);
//	cout << n << endl;
//	return 0;
//}
//const int N = 110;
//int arr1[N][N];//旧数据
//int arr2[N][N];//新数据
//int main()
//{
//    int n, m;
//    cin >> n >> m;
//    int i = 0;
//    int j = 0;
//    for (i = 0; i < n; i++)
//    {
//        for (j = 0; j < m; j++)
//        {
//            cin >> arr1[i][j];
//            arr2[i][j] = arr1[i][j];
//        }
//    }
//    //计算
//    for (i = 1; i < n - 1; i++)
//    {
//        for (j = 1; j < m - 1; j++)
//        {
//        //浮点是直接赋值给整型就是去掉了⼩数点后的数据
//        //这⾥需要根据四舍五⼊的⽅式赋值给整数，所以需要特殊处理
//            arr2[i][j] = (arr1[i][j] + arr1[i - 1][j] + arr1[i + 1][j] +arr1[i][j - 1] + arr1[i][j + 1]) / 5.0 + 0.5;
//        }
//    }
//    //输出
//    for (i = 0; i < n; i++)
//    {
//        for (j = 0; j < m; j++)
//        {
//            cout << arr2[i][j] << " ";
//        }
//        cout << endl;
//    }
//    return 0;
//}
//const int N = 110;
//int arr[N][N];
//int main()
//{
//	int n, m;
//	cin >> m >> n;
//	for (int i = 0; i < m; i++)
//	{
//		for (int j = 0; j < n; j++)
//		{
//			cin >> arr[i][j];
//		}
//	}
//	int sum = 0;
//
//	for (int i = 0; i < m; i++)
//	{
//		for (int j = 0; j < n; j++)
//		{
//			if (i == 0 || j == 0 || i == m - 1 || j == n - 1)
//			{
//				sum += arr[i][j];
//			}
//		}
//	}
//	cout << sum << endl;
//	return 0;
//}
//int main()
//{
//	string s;
//	//输⼊
//	cin >> s;
//	//输出
//	cout << s << endl;
//	return 0;
//}
//int main()
//{
//	string s1("hello world");
//	string s2("hehe");
//	s2 = s1;
//	cout << s2 << endl;
//	return 0;
//}
//int main()
//{
//	string s1;
//	string s2 ="hello world";
//	cout << "s1:" << s1 << endl;
//	s1 = s2;
//	cout << "s1:" << s1 << endl;
//	cout << "s2:" << s2 << endl;
//	return 0;
//}
//int arr[110][110];
//int main()
//{
//	int n, m;
//	cin >> n >> m;
//	for (int i = 0; i < n; i++)
//	{
//		for (int j = 0; j < m; j++)
//		{
//			cin >> arr[i][j];
//		}
//	}
//	for (int i = 0; i <m ; i++)
//	{
//		for (int j = 0; j < n; j++)
//		{
//			cout << arr[j][i] << " ";
//		}
//		cout << endl;
//	}
//
//	return 0;
//}
//const int N = 100;
//int arr1[N][N];
//int arr2[N][N];
//int main()
//{
//	int n, m;
//	cin >> n >> m;
//	for (int i = 0; i < n; i++)
//	{
//		for (int j = 0; j < m; j++)
//		{
//			cin >> arr1[i][j];
//		}
//	}
//	for (int i = 0; i < n; i++)
//	{
//		for (int j = 0; j < m; j++)
//		{
//			cin >> arr2[i][j];
//		}
//	}
//	for (int i = 0; i < n; i++)
//	{
//		for (int j = 0; j < m; j++)
//		{
//			cout<<arr1[i][j]+arr2[i][j]<<" ";
//		}
//		cout << endl;
//	}
//	return 0;
//}
//const int N = 110;
//int arr[N][N];
//int m, n;
//int main()
//{
//	cin >> m >> n;
//	int i = 0;
//	int j = 0;
//	for (i = 0; i < m; i++)
//	{
//		for (j = 0; j < n; j++)
//		{
//			cin >> arr[i][j];
//		}
//	}
//	int num = 0;
//	int c = 0;
//	for (i = 0; i < m; i++)
//	{
//		for (j = 0; j < n; j++)
//		{
//			cin >> num;
//			if (num == arr[i][j])
//				c++;
//		}
//	}
//	printf("%.2f\n", c * 1.0 / (m * n) * 100);
//	return 0;
//}
//int arr[5][5];
//int main()
//{
//	for (int i = 0; i < 5; i++)
//	{
//		for (int j = 0; j < 5; j++)
//		{
//			cin >> arr[i][j];
//		}
//	}
//	int n, m;
//	cin >> n >> m;
//	for (int i = 0; i < 5; i++)
//	{
//		int tmp = arr[n-1][i];
//		arr[n-1][i] = arr[m-1][i];
//		arr[m-1][i] = tmp;
//	}
//	for (int i = 0; i < 5; i++)
//	{
//		for (int j = 0; j < 5; j++)
//		{
//			cout << arr[i][j] << " ";
//		}
//		cout << endl;
//	}
//	return 0;
//}
//const int N = 25;
//int arr[N][N];
//int main()
//{
//	int n = 0;
//	cin >> n;
//	for (int i = 0; i < n; i++)
//	{
//		for (int j = 0; j <= i; j++)
//		{
//			if (j == 0 || i == j)
//			{
//				arr[i][j] = 1;
//			}
//			if (i >= 2 && 1 <= j)
//			{
//				arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
//			}
//			cout << arr[i][j] << " ";
//		}
//		cout << endl;
//	}
//}
//int main()
//{
//	int n;
//	cin >> n;
//	int arr[20][20] = { 0 };
//	arr[0][0] = 1;
//	arr[1][0] = 1;
//	arr[1][1] = 1;
//	for (int i = 2; i < n; i++)
//	{
//		for (int j = 2; j <= i; j++)
//		{
//			if (i == j)
//			{
//				arr[i][j] = 1;
//			}
//			if (j == 0) {
//				arr[i][j] = 1;
//			}
//			arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
//		}
//	}
//	for (int i = 2; i < n; i++)
//	{
//		for (int j = 2; j <= i; j++)
//		{
//			cout << arr[i][j] << " ";
//		}
//		cout<<"\n"<<endl;
//	}
//	return 0;
//}
//int main()
//{
//	int a, b,c;
//	//scanf("%d%d", &a, &b);//输入a b
//	//scanf("%d %d", &a, &b);//输入a b
//	//scanf("%d,%d", &a, &b);//输入a,b
//	//scanf("%d-%d", &a, &b);//输入a-b
//	//scanf("%d%*c%d", &a, &b);//输入a(任意字符)b
//	scanf_s("%d%*c%d%*c%d", &a, &b, &c);
//	printf("%d %d %d", a, b, c);
//
//}
//int main()
//{
//	int arr[2][2];
//	for (int i = 0; i < 2; i++)
//	{
//		for (int j = 0; j < 2; j++)
//		{
//			//方法一
//			cin >> arr[i][j];
//			//方法二
//			//scanf("%d", &arr[i][i]);
//		}
//	}
//	for (int i = 0; i < 2; i++)
//	{
//		for (int j = 0; j < 2; j++)
//		{
//			//方法一
//			cout<<arr[i][j]<<" ";
//			//方法二
//			//printf("%d", arr[i][i]);
//		}
//		cout << "\n";
//	}
//}
//const int N = 1010;
//int arr[N];
//int main()
//{
//	int n;
//	cin >> n;
//	for (int i = 0; i < n; i++)
//	{
//		cin >> arr[i];
//	}
//	for (int i = 0; i < n-1; i++)
//	{
//		int j = 0;
//		for (j = 0; j < n-i-1; j++)
//		{
//			if (arr[j] < arr[j + 1])
//			{
//				int temp = arr[j];
//				arr[j] = arr[j + 1];
//				arr[j + 1] = temp;
//			}
//		}
//	}
//	for (int i = 0; i < n; i++)
//	{
//		cout << arr[i] << endl;
//	}
//	return 0;
//}
//const int N = 20;
//int arr[N];
//int main()
//{
//	int n,sum=0;
//	cin >> n;
//	for (int i = 0; i < n; i++)
//	{
//		cin >> arr[i];
//	}
//	for (int i = 0; i < n; i++)
//	{
//		for (int j = 0; j < i; j++)
//		{
//			if (arr[i] > arr[j])
//			{
//				sum++;
//			}
//		}
//		cout << sum << " ";
//		sum = 0;
//	}
//	return 0;
//}
//const int N = 5010;
//char arr[N];//下标为0的地⽅不使⽤
////数组的下标做灯的编号，编号从1开始，所以下标0的元素不使⽤
////0表⽰关
////1表⽰开
//int main()
//{
//    int n = 0;
//    cin >> n;
//    int i = 0;
//    //⼈
//    //第⼀个⼈将所有的灯都关闭，因为数组最开始全是0，直接跳过编号为1的⼈
//    for (i = 2; i <= n; i++)
//        {
//            //灯的下标
//            //因为1号灯后期不会动，所以灯的编号从2号开始
//            for (int j = i; j <= n; j++)
//            {
//                if (j % i == 0)
//                {
//                    if (arr[j] == 1)
//                      arr[j] = 0;
//                    else
//                      arr[j] = 1;
//                }
//            }
//        }
//    for (i = 1; i <= n; i++)
//    {
//        if (arr[i] == 0)
//            cout << i << " ";
//    }
//    cout << endl;
//    return 0;
//}
//int n;
//int num;
//int p1, p2, p3, p4;
//int main()
//{
//	cin >> n;
//	int i = 0;
//	for (i = 0; i < n; i++)
//	{
//		cin >> num;
//		if (num >= 0 && num <= 18)
//		{
//			p1++;
//		}
//		else if (num >= 19 && num <= 35)
//		{
//			p2++;
//		}
//		else if (num >= 36 && num <= 60)
//		{
//			p3++;
//		}
//		else
//		{
//			p4++;
//		}
//	}
//	printf("%.2f%%\n", p1 * 100.0 / n);
//	printf("%.2f%%\n", p2 * 100.0 / n);
//	printf("%.2f%%\n", p3 * 100.0 / n);
//	printf("%.2f%%\n", p4 * 100.0 / n);
//	return 0;
//}
//const int N = 110;
//int arr[N];
//int main()
//{
//	int n;
//	double sum1 = 0, sum2 = 0, sum3 = 0, sum4 = 0;
//	cin >> n;
//	for (int i = 0; i < n; i++)
//	{
//		cin >> arr[i];
//	}
//	for (int i = 0; i < n; i++)
//	{
//		if (arr[i] >= 0 &&arr[i] <= 18)
//		{
//			sum1++;
//		}
//		else if (arr[i] >= 19 && arr[i] <= 35)
//		{
//			sum2++;
//		}
//		else if (arr[i] >= 36 && arr[i] <= 60)
//		{
//			sum3++;
//		}
//		else
//		{
//			sum4++;
//		}
//	}
//	printf("%.2f%%\n", sum1 * 100.0 / n);
//	printf("%.2f%%\n", sum2 * 100.0 / n);
//	printf("%.2f%%\n", sum3 * 100.0 / n);
//	printf("%.2f%%\n", sum4 * 100.0 / n);
//
//
//	return 0;
//}
//const int N = 1010;
//int arr1[N];
//int main()
//{
//	int n = 0;
//	int m = 0;
//	cin >> n;
//	for (int i = 0; i < n; i++)
//	{
//		cin >> arr1[i];
//	}
//	int ret = 0;
//	for (int i = 0; i < n; i++)
//	{
//		cin >> m;
//		ret += arr1[i] * m;
//	}
//	cout << ret << endl;
//	return 0;
//}
//int main()
//{
//	int n;
//	int arr1[1010];
//	int arr2[1010];
//	int sum = 0;
//	cin >> n;
//	for (int i = 0; i < n; i++)
//	{
//		cin >> arr1[i];
//	}
//	for (int i = 0; i < n; i++)
//	{
//		cin >> arr2[i];
//	}
//	for (int i = 0; i < n; i++)
//	{
//		sum += arr1[i] * arr2[i];
//	}
//	cout << sum << endl;
//	return 0;
//}
//int main()
//{
//	int n;
//	int arr[110];
//	cin >> n;
//	for (int i = 0; i < n; i++)
//	{
//		cin >> arr[i];
//	}
//	for (int i = 0; i < n/2; i++)
//	{
//		int temp;
//		temp = arr[i];
//		arr[i] = arr[n - i - 1];
//		arr[n - i - 1] = temp;
//	}
//	for (int i = 0; i < n; i++)
//	{
//		cout << arr[i] << " ";
//	}
//}

//int main()
//{
//	int n;
//	int arr[100] = {0};
//	cin >> n;
//	for (int i = 0; i < n; i++)
//	{
//		cin >> arr[i];
//		//scanf("%d", &arr[i]);
//	}
//	for (int i = 0; i < n; i++)
//	{
//		/*cout << arr[i] << " ";*/
//		printf("%d", arr[i]);
//	}
//	return 0;
//}
//const int N = 10010;
//int arr[N];
//int main()
//{
//	int n;
//	cin >> n;
//	for (int i = 0; i < n; i++)
//	{
//		cin >> arr[i];
//	}
//	int x;
//	cin >> x;
//	int i;
//	for (i = 0; i < n; i++)
//	{
//		if (arr[i] == x)
//		{
//			cout << i << endl;
//			break;
//		}
//	}
//	if (i == n)
//	{
//		cout << -1 << endl;
//	}
//	return 0;
//}
//int main()
//{
//    int a, b;
//    cin >> a >> b;
//    cout << pow(a, b) << endl;
//    return 0;
//}
//int main()
//{
//	for (int i = 100; i <=999; i++)
//	{
//		int temp = i; 
//		int ret = 0;
//		while (temp)
//		{
//			ret += pow(temp % 10, 3);
//			temp /= 10;
//		}
//		if (ret == i)
//			cout << i << endl;
//	}
//	return 0;
//}
//int main()
//{
//	int a, b, c;
//	int sum = 0;
//	for (int i = 100; i <=999; i++)
//	{
//		sum = i;
//		a = i % 10;
//		b = i / 10 % 10;
//		c = i / 100;
//		if ((a * a * a + b * b * b + c * c * c) == sum)
//		{
//			cout << i << endl;
//		}
//	}
//	return 0;
//}
//int main()
//{
//    char arr[20] = { 0 };
//    //输⼊
//    scanf("%s", arr + 2);//从arr + 2的位置开始存放
//    //输出
//    printf("%s", arr + 2);//从arr + 2的位置开始打印
//    return 0;
//}